package com.tianlu.store.entity;
 
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import com.baomidou.mybatisplus.annotation.TableField;
import com.tianlu.store.enums.OrderStatusEnum;
import lombok.Data;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.tianlu.store.common.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableName;

import javax.persistence.Transient;
import javax.validation.constraints.NotNull;

/**
 * 订单表(OrderInfo)实体类
 *
 * @author 梁东烂
 * @since 2023-04-03 17:06:04
 */
@Data
@ApiModel(value = "订单表实体类", description = "订单表实体类")
@TableName("t_order_info")
public class OrderInfo extends BaseEntity<OrderInfo> {
    private static final long serialVersionUID = 992723072734175065L;
    /**
     * 用户id
     */
    @ApiModelProperty(value = "用户id")
    private Long userId;
    /**
     * 金额
     */   
    @ApiModelProperty(value = "金额")
    @NotNull(message = "金额不能为空！")
    private BigDecimal amount;
    /**
     * 备注
     */   
    @ApiModelProperty(value = "备注")
    private String remark;
    /**
     * 状态：1待发货，2待收货，3待评价，4已完成，5退款中，6已退款
     */   
    @ApiModelProperty(value = "状态：1待发货，2待收货，3待评价，4已完成，5退款中，6已退款")
    private Integer status;
    /**
     * 支付时间
     */   
    @ApiModelProperty(value = "支付时间")
    private Date payTime;
    /**
     * 发货时间
     */   
    @ApiModelProperty(value = "发货时间")
    private Date sendTime;
    /**
     * 删除标识，1已删除，0未删除
     */
    @ApiModelProperty(value = "删除标识，1已删除，0未删除")
    private Integer deleteFlag;

    /**
     * 订单类型：1普通订单，2免费订单，3秒杀订单
     */
    @ApiModelProperty(value = "订单类型：1普通订单，2免费订单，3秒杀订单")
    private Integer type;

    /**
     * 订单商品
     */
    @ApiModelProperty(value = "订单商品")
    @Transient
    @TableField(exist = false)
    private List<OrderProduct> productInfoList;

    /**
     * 订单地址
     */
    @ApiModelProperty(value = "订单地址")
    @Transient
    @TableField(exist = false)
    private OrderAddress orderAddress;
    /**
     * 状态：1待发货，2待收货，3待评价，4已完成，5退款中，6已退款
     */
    @ApiModelProperty(value = "状态：1待发货，2待收货，3待评价，4已完成，5退款中，6已退款")
    @Transient
    @TableField(exist = false)
    private String statusText;
    public String getStatusText() {
        return status == null ? "" : OrderStatusEnum.findByCode(status);
    }
    /**
     * 用户名
     */
    @ApiModelProperty(value = "用户名")
    @Transient
    @TableField(exist = false)
    private String userName;
    /**
     * 用户电话
     */
    @ApiModelProperty(value = "用户电话")
    @Transient
    @TableField(exist = false)
    private String userPhone;
}
